#ifndef CAN_CONTROLLER_H
#define CAN_CONTROLLER_H

#include "robot_def.h"
#include "DM4310.h"
#include "gm_driver.h"

//一拖四控制参数
#define pre4_id  0
#define rto4_id  1


typedef struct{
	int16_t	 			speed_rpm;			//转子转速
	int16_t  			real_current; 		//实际转矩电流
	uint8_t  			temperature;		//电机温度
	uint16_t 			angle;				//转子机械角度abs angle range:[0,8191]
	uint16_t 			last_angle;			//上一次转子机械角度
	uint16_t			offset_angle;		//电机上电转子初始机械角度
	int32_t				round_cnt;			//电机转子转动圈数
	int32_t				total_angle;		//电机总转动角度
	float             	total_radangle;
	
	uint8_t				msg_cnt;			//CAN接收数据次数（用于获取电机转子初始角度）
	float 				output_linear_speed;//输出角速度
}motor_measure_t;

typedef struct{
	float	 			  speed_rpm;			//转子转速
	int16_t  			real_current; 	//实际转矩电流
	int16_t  			given_current;	//给定转矩电流
	uint8_t  			temperature;		//电机温度
	float 			  angle;					//绝对角度
	float 			  last_angle;			//上一次转子机械角度
	float					offset_angle;		//电机上电转子初始机械角度
	int32_t				round_cnt;			//电机转子转动圈数
	float				  total_radangle;		
	uint8_t				msg_cnt;				//CAN接收数据次数（用于获取电机转子初始角度）
  int32_t       cmd_time;         //用于记录时间
	int32_t       run_time;
}motor_measure_DM;
	
/* 本模块向外部提供的宏定义 -------------------------------------------------*/



//底盘电机
#define	CHASSIS_MOTOR_LU		 		0
#define	CHASSIS_MOTOR_LD		 		1
#define	CHASSIS_MOTOR_RD		 		2
#define	CHASSIS_MOTOR_RU    			3

#define	TRIGGER_MOTOR			    	4
#define	YAW_MOTOR						5
#define	PITCH_MOTOR				   	 	6
#define	SHOOTL_3508MOTOR	        	7
#define	SHOOTR_3508MOTOR	        	8


#define NUM_OF_MOTOR          			9

/* 本模块向外部提供的结构体/枚举定义 ----------------------------------------*/


/* 本模块向外部提供的变量声明 -----------------------------------------------*/

/* 本模块向外部提供的自定义数据类型变量声明 ---------------------------------*/
extern motor_measure_t  motor_param_get[NUM_OF_MOTOR];
/* 本模块向外部提供的接口函数原型声明 ---------------------------------------*/





#endif // !CAN_CONTROLLER_H
